//
//  NSString+DKPublic.h
//  DanKU
//
//  Created by 吴斌 on 2023/10/1.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NSString (DKPublic)
+ (NSString *)getServiceUrl:(NSString *)endServiceUrl;
+ (CGSize)getContentSize:(NSString *)content withFont:(UIFont *)contentFont withSize:(CGSize)maxSize;
+ (CGSize)getContentAttributedSize:(NSAttributedString *)content withSize:(CGSize)maxSize;
+ (NSString *)dicChangeString:(NSDictionary *)dic;
+ (NSDictionary *)stringChangeDic:(NSString *)json;
//时间戳转时间
+ (NSString *)timeWithDayMonYear:(NSString *)timestamp;
//金额显示
+ (NSString *)makeShowMoney:(NSString *)moneyCoin;
//图片压缩大小
+ (NSData *)changeImageSizeForData:(UIImage *)image toByte:(NSUInteger)maxByte;
//base64解码
+ (UIImage *)imageWithBase64String:(NSString *)base64String;
//验证邮箱格式
+ (BOOL)makeEmailAddress:(NSString *)emailAddress;
//消息
//是否是当天时间
+ (BOOL)isCurrentDayTime;
//获得档期时间戳天数
+ (NSString *)getCurrentTimeDayTimestamp;
//获得档期时间戳
+ (NSString *)getCurrentTimeTimestamp;
+ (NSString *)getIdfa;
//生成自己的uuid
+ (NSString *)getSelfUuid;
+ (NSString *)getNetworkIPAddress;
//获取屏幕分辨率
+ (NSString *)getScreenRate;
//获取设备的总容量
+ (NSString *)totalDiskSpace;
//可用容量
+ (NSString *)freeDiskSpace;
//获取是否是wifi
+ (NSString *)isWifiNetStatus;
//获取wifi名称
+ (NSString *)getWifiSSID;
//获取总内存大小
+ (NSString *)getTotalMemorySize;
//获取可用内存大小
+(long )getAvailableMemorySize;

+ (NSDate *)getThreeYearTime;
+ (NSDate *)getOneYearTime;

#pragma mark -- app信息
+ (NSString *)getAppVersion;
#pragma  mark  device_info[new_storage] 存储信息
/// 获取总内存大小（单位：字节）
+ (NSString *)totalMemoryString;

/// 获取内存空闲大小（单位：字节）
+ (NSString *)freeMemoryString;

/// 获取可清理内存（单位：字节）
+ (NSString *)purgeableMemoryString;

/// 获取不活动内存（单位：字节）
+ (NSString *)inactiveMemoryString;

/// 获取活动内存（单位：字节）
+ (NSString *)activeMemoryString;

/// 获取保留内存（单位：字节）
+ (NSString *)wiredMemoryString;

/// 获取已用内存（单位：字节）
+ (NSString *)usedMemoryString;


#pragma  mark  device_info[battery_status] 电量信息

/// 获取电池百分比
+ (float)batteryLevel;

/// 获取电池状态
+ (UIDeviceBatteryState)batteryState;

/// 获取电池状态的字符串表示
+ (NSString *)batteryStateString:(UIDeviceBatteryState)batteryState;
#pragma  mark  device_info[general_data] 设备基本信息
//系统开机时间
+ (int)getSystemUptimeByMillSecond;
//是否设置代理
+ (BOOL)getProxyStatus;
//是否使用vpn
+ (BOOL)isVPNOn;
//运营商无线接入技术
+ (NSString *)networkInfo;
#pragma  mark device_info[general_data] 设备基本信息

/// 获取设备当前时间
+ (NSString *)currentDeviceTime;

/// 获取开机时间到现在的毫秒数（包括睡眠时间）
+ (NSTimeInterval)uptimeInMillisecondsIncludingSleep;

/// 获取 MAC 地址，获取不到返回 "02:00:00:00:00:00"
+ (NSString *)macAddress;

/// 是否使用代理
+ (BOOL)isUsingProxy;

/// 是否使用 VPN
+ (BOOL)isUsingVPN;

/// 获取运营商无线接入技术
+ (NSString *)carrierTechnology;

/// 获取网络类型
+ (NSString *)networkType;

/// 获取时区的 ID（取 localTimeZone 的 abbreviation）
+ (NSString *)timeZoneID;

/// 获取从开机到现在的毫秒数（不包括睡眠时间）
+ (NSTimeInterval)uptimeInMillisecondsExcludingSleep;

/// 获取唯一标识
+ (NSString *)uniqueIdentifier;


#pragma  mark  device_info[process_info] 进程信息 - 参数说明

/**
 获取活动进程的数量。
 */
+ (NSUInteger)activeProcessCount;

/**
 获取活动进程的名称数组。
 */
+ (NSArray<NSString *> *)activeProcessNames;
//进程名称
+ (NSString *)processName;
//进程环境信息
+ (NSString *)processEnvironment;
//进程环境参数
+ (NSString *)processArguments;
/**
 获取设备的物理内存大小。
 */
+ (NSUInteger)physicalMemory;

/**
 获取设备的进程数量。
 */
+ (NSUInteger)processCount;

/**
 获取设备的进程ID。
 */
+ (pid_t)processID;

/**
 获取设备的运行环境。
 */
+ (NSString *)operatingEnvironment;

/**
 获取设备的操作系统字符串。
 */
+ (NSString *)operatingSystemString;

/**
 获取设备的系统运行时间（开机时间）。
 */
+ (NSTimeInterval)systemUptime;

/**
 检查设备是否开启低电量模式。
 */
+ (BOOL)isLowPowerModeEnabled;


#pragma  mark  device_info[hardware] 硬件信息 - 参数说明

/**
 获取设备的屏幕高度。
 */
+ (NSInteger)screenHeight;

/**
 获取设备的名称。
 */
+ (NSString *)deviceName;

/**
 获取设备的屏幕宽度。
 */
+ (NSInteger)screenWidth;

/**
 获取设备的型号。
 */
+ (NSString *)deviceModel;
+ (NSString *)sysModelName;
/**
 获取设备的物理尺寸。
 */
+ (CGFloat)physicalSize;

/**
 获取设备的系统版本。
 */
+ (NSString *)systemVersion;

/**
 获取手机的信号强度格数，默认值为-1。
 */
+ (NSInteger)signalStrength;

/**
 获取连接到设备的键盘种类。
 */
+ (NSString *)keyboardType;

/**
 检查设备是否为模拟器。
 */
+ (BOOL)isSimulator;

//获取随机数
+ (NSString *)getRandomStringWithNum:(NSInteger)num;
@end

NS_ASSUME_NONNULL_END
